Формат пакета данных от датчиков c LoRaWAN
Структура пакета с данными
Структура пакета с данными имеет переменную длину и может содержать до 8 различных параметров, передаваемых от датчика.
И имеет следующую структуру:
typedef struct {
union{
LORA_VALUE_t payload[];
uint8_t raw[48];
}DATA_u;
}LORA_MESSAGE_t;
Каждый параметр (LORA_VALUE_t) в свою очередь описывается структурой:
typedef struct{
LORA_MESSAGE_TYPE_e type;
uint8_t value[];
}LORA_VALUE_t;
Внимание ! Данные отправляются и принимаются на FPort равном 2
Доступные типы данных LORA_MESSAGE_TYPE_e
| Значение |
Описание |
Тип |
Размер |
| 0, 0x01 |
Ток прибора |
IEE754 Float |
4 |
| 1, 0x01 |
Значение первичной величины |
VALUE_t |
5 |
| 2, 0x02 |
Значение статуса работы устройства |
STATUS_t |
1 |
| 3, 0x03 |
Уникальный номер прибора |
uint24_t |
3 |
| 4, 0x04 |
Минимальное значение диапазона измерения PV |
VALUE_t |
5 |
| 5, 0x05 |
Максимальное значение диапазона измерения PV |
VALUE_t |
5 |
| 6, 0x06 |
Значение дополнительного статуса устройства |
зарезервировано |
4 |
| 7, 0x07 |
Значение процента от диапазона измерения |
IEE754 Float |
4 |
| 8, 0x08 |
Уникальный адрес устройства для LoRa P2P |
LoRa DevAddr |
4 |
| 9, 0x09 |
Интервал измерения и передачи для LoRa P2P |
internal |
4 |
| 10, 0x0A |
Подтверждение приема для LoRa P2P |
internal |
1 |
| 11, 0x0B |
Идентификатор пакета LoRa P2P |
internal |
4 |
| 12, 0x0C |
Оставшийся процент элемента питания |
IEE754 Float |
4 |
| 13, 0x0D |
Уровень RSSI и SNR от принятого сообщения прибором |
RSSI_SNR_t |
4 |
| 14, 0x0E |
Значение статуса работы радиопередатчика |
SELF_STATE_t |
2 |
| 15, 0x0F |
Запрос параметров устройства |
CONF_GETBLOCK_t |
2 |
| 16, 0x10 |
Параметры «Информация об устройстве» |
CONF_DEVICE_INFO_t |
13 |
| 17, 0x11 |
Параметры «Отслеживание пороговых значений» |
CONF_THRESHOLD_t |
15 |
| 18, 0x12 |
Параметры «Измерение и передача» |
CONF_MEASURE_t |
4 |
| 19, 0x13 |
Параметры «LoRa» |
CONF_LORA_t |
7 |
| 20, 0x14 |
Параметры «Бесконтактный переключатель» |
CONF_REED_t |
2 |
| 21, 0x15 |
Время и дата |
UNIX-time |
4 |
| 22, 0x16 |
Значение вторичной величины (SV) |
VALUE_t |
5 |
| 23, 0x17 |
Минимальное значение диапазона измерения SV |
VALUE_t |
5 |
| 24, 0x18 |
Максимальное значение диапазона измерения SV |
VALUE_t |
5 |
| 25, 0x19 |
Значение третичной величины (TV) |
VALUE_t |
5 |
| 26, 0x1A |
Минимальное значение диапазона измерения TV |
VALUE_t |
5 |
| 27, 0x1B |
Максимальное значение диапазона измерения TV |
VALUE_t |
5 |
| 28, 0x1C |
Значение четверичной величины (QV) |
VALUE_t |
5 |
| 29, 0x1D |
Минимальное значение диапазона измерения QV |
VALUE_t |
5 |
| 30, 0x1E |
Максимальное значение диапазона измерения QV |
VALUE_t |
5 |
Описание доступных типов данных
Тип данных VALUE_t
| Байт |
Описание |
Тип |
Размер |
| 0 |
Величина СИ |
SI_TYPE_e |
1 |
| 1 - 4 |
Значение |
IEE754 Float |
4 |
Тип данных STATUS_t
| Байт |
Описание |
Тип |
Размер |
| 0 |
| Бит | Описание | | 0 | Первичная величина за диапазоном измерения | | 1 | Вторичная величина за диапазоном измерения | | 2 | Токовая петля в насыщении | | 3 | Токовая петля в фиксированном значении | | 4 | Доступны дополнительные статусы работы устройства | | 5 | Холодный старт | | 6 | Конфигурация изменена | | 7 | Устройство неисправно | |
Битовое поле |
1 |
Тип данных SI_TYPE_e
| Байт |
Описание |
Тип |
Размер |
| 0 |
| Значение | Описание | | 0 | Неопределена | | 1 | inH2O, дюймы вод. ст. при 20 градусах Цельсия | | 2 | inHg, дюймы рт. ст. | | 3 | ftH2O, футы вод. ст. при 20 градусах Цельсия | | 4 | mmH2O, мм вод. ст. при 20 градусах Цельсия | | 5 | mmHg, мм рт. ст. при 0 градусах Цельсия | | 6 | psi, фунт на квадратный дюйм | | 7 | bar, бар | | 8 | mBar, миллибар | | 9 | g/cm2, грамм силы на сантиметр квадратный | | 10 | kg/cm2, килограмм силы на сантиметр квадратный | | 11 | Pa, паскаль | | 12 | kPa, килопаскаль | | 13 | Torr, торр | | 14 | atm, атмосфера | | 32 | °С, градус Цельсия | | 33 | °F, градус Фаренгейта | | 34 | °Ra, градус Ранкина | | 35 | K, градус Цельсия | | 36 | mV, милливольты | | 37 | Ohm, сопротивление в Омах | | 39 | mA, миллиамперы | | 57 | %, проценты | | 58 | V, вольты | | 145 | inH2O (60 °F), дюймы вод. ст. при 60 градусах Фаренгейта | | 163 | kΩ, килоомы | | 170 | cmH2O (4 °C), сантиметры вод. ст. при 4 градусах Цельсия | | 171 | mH2O (4 °C), метры вод. ст. при 4 градусах Цельсия | | 172 | cmHg, сантиметры рт. ст. при 0 градусах Цельсия | | 173 | lb/ft2, фунт на квадратный фут | | 174 | hPa, гектопаскаль | | 175 | psia, фунт на квадратный дюйм абсолютный | | 176 | kg/m2, килограмм силы на метр квадратный | | 177 | ftH2O (4 °C), футы вод. ст. при 4 градусах Цельсия | | 178 | ftH2O (60 °F), футы вод. ст. при 60 градусах Фаренгейта | | 179 | mHg, метры рт. ст. при 0 градусах Цельсия | | 180 | Mpsi, мегафунт на квадратный дюйм | | 181 | oz/in2, унция на квадратный дюйм | | 237 | MPa, мегапаскаль | | 238 | inH2O (4 °C), дюймы вод. ст. при 4 градусах Цельсия | | 239 | mmH2O (4 °C), мм вод. ст. при 4 градусах цельсия | |
Enum |
1 |
Тип данных SELF_STATE_t
| Байт |
Описание |
Тип |
Размер |
| 0 |
| Бит | Описание | | 0 | Поврежден сектор с заводскими настройкам прибора | | 1 | Поврежден сектор с резервными настройками прибора | | 2 | Поврежден сектор с настройками прибора | | 3 | Ошибка АЦП | | 4 | Ошибка вторичного преобразователя | | 5 | Активирован магнитный переключатель, геркон | | 6 | Ошибка встроенного архива измерений | 7 | Ошибка FRAM | |
Битовое поле |
1 |
| 1 |
| Бит | Описание | | 0 | Активирован пороговый детектор по минимальной границе | | 1 | Активирован пороговый детектор по максимальной границе | | 2-7 | Зарезервировано | |
Битовое поле |
1 |
Тип данных CONF_GETBLOCK_t
Внимание!
При запросе необходимо учитывать максимальную длину ответного пакета для радиопередачи: для режимов LoRaWAN DR0 - DR2 она составляет 53 байта
| Байт |
Описание |
Тип |
Размер |
| 0 |
| Бит | Описание | | 0 | Блок "Информация об устройстве" | | 1 | Блок "Отслеживания пороговых значений" | | 2 | Блок "Измерение и передача" | | 3 | Блок "LoRa" | | 4 | Блок "Бесконтактный переключатель" | | 5 - 7 | Зарезервировано | |
Битовое поле |
1 |
| 1 |
| Бит | Описание | | 0 - 7 | Зарезервировано | |
Битовое поле |
1 |
| Байт |
Описание |
Тип |
Размер |
| 0 - 1 |
RSSI |
int16_t |
2 |
| 2 - 3 |
SNR |
int16_t |
2 |
Тип данных CONF_DEVICE_INFO_t
| Байт |
Описание |
Тип |
Размер |
| 0 - 1 |
Версия ПО |
(major << 8) + minor |
2 |
| 2 - 3 |
Версия аппаратного обеспечения |
(major << 8) + minor |
2 |
| 4 - 7 |
Контрольная сумма ПО |
uint32_t |
4 |
| 8 - 11 |
Контрольная сумма метрологической части ПО |
uint32_t |
4 |
| 12 |
Способ измерения |
| Значение | Описание | | 0 | Токовая петля | | 1 | HART | | 2 | SWIRE | |
1 |
Тип данных CONF_THRESHOLD_t
| Байт |
Описание |
Тип |
Размер |
| 0 |
Отслеживаемый параметр |
| Значение | Описание | | 0 | Ток | | 1 | PV | | 2 | Процент | |
1 |
| 1 - 4 |
Значение MIN |
IEE754 Float |
4 |
| 5 - 8 |
Значение MAX |
IEE754 Float |
4 |
| 9 - 12 |
Значение гистерезиса |
IEE754 Float |
4 |
| 13 |
Отслеживать падение ниже уровня (MIN - гистерезис) |
bool |
1 |
| 14 |
Отслеживать превышение над уровнем (MAX + гистерезис) |
bool |
1 |
Тип данных CONF_MEASURE_t
| Байт |
Описание |
Тип |
Размер |
| 0 |
Отправляемая переменная |
| Значение | Описание | | 0 | Установленный ток | | 1 | PV и % | |
1 |
| 1 |
Время выхода на режим, в сек |
uint8_t, от 4 до 15 |
1 |
| 2 |
Интервал передачи, в мин |
uint8_t, от 1 до 30 |
1 |
| 3 |
Интервал измерения, в мин |
uint8_t, от 1 до 240 |
1 |
Тип данных CONF_LORA_t
| Байт |
Описание |
Тип |
Размер |
| 0 |
Кол-во попыток передачи |
uint8_t, от 1 до 10 |
1 |
| 1 |
Скорость передачи данных |
| Значение | Описание | | 0 | DR0 | | 1 | DR1 | | 2 | DR2 | | 3 | DR3 | | 4 | DR4 | | 5 | DR5 | |
1 |
| 2 |
Мощность передатчика |
uint8_t, от 0 до 14 |
1 |
| 3 |
Активность LBT/CAD |
bool |
1 |
| 4-5 |
Уровень RSSI для LBT |
int16_t, от -125 до 0 |
1 |
| 6 |
Время сканирования эфира LBT, в мсек |
uint8_t, от 5 до 250 |
1 |
Тип данных CONF_REED_t
| Байт |
Описание |
Тип |
Размер |
| 0 |
Активность бесконтактного переключателя "геркон" |
bool |
1 |
| 1 |
Время выхода на режим при срабатывании, в сек |
uint8_t, от 4 до 15 |
1 |
Пример декодирования
Принятый пакет с данными [02000078BE7F40]
0x02 – Тип «Значение статуса работы устройства»
0x00 – значение
0x00 – Тип «Ток прибора»
[0x78, 0xBE, 0x7F, 0x40] Значение в IEE754 Float , от младшего к старшему
{
Status: {
PrimaryVariableOutOfLimits: false,
NonPrimaryVariableOutOfLimits: false,
LoopCurrentSaturated: false,
MoreStatusAvailable: false,
ColdStart: false,
ConfigurationChanged: false,
DeviceMalfunction: false
}
Current: {value: '3.996'}
}
Принятый пакет с данными [140106 0e1000 0c84ffc742 104601140188af3fdd0000000001 11020000a0410000a0420000a0400000 1201040303 1303050800b0ff01]
{
ConfREED: { IsReedActive: true, ReedWarmUpDelay: 6 },
ConfREEDRaw: { value: '0106', si: 'Undef' },
SelfState: {
ErrorFactorySettings: false,
ErrorReservedSettings: false,
ErrorUserSettings: false,
ErrorADC: false,
ErrorTransmitter: true,
IsReedBeenActivated: false
},
SelfStateRaw: { value: '0x10', si: 'Undef' },
Battery: { value: 99.999, si: '%' },
ConfDEVICEINFO: {
VersionFW: '1.70',
VersionHW: '1.20',
CRC_FW: '0xdd3faf88',
CRR_Metrolog: '0x0',
MeasureMethod: 'HART'
},
ConfDEVICEINFORaw: { value: '4601140188af3fdd0000000001', si: 'Undef' },
ConfTHRESHOLD: {
InitialValue: 'Percent',
ThresholdMin: 20,
ThresholdMax: 80,
ThresholdHyst: 5,
ThresholdEnMin: false,
ThresholdEnMax: false
},
ConfTRESHOLDRaw: { value: '020000a0410000a0420000a0400000', si: 'Undef' },
ConfMEASURE: {
SendVar: 'Pv & Percent',
WarmUpDelay: 4,
SendPeriodMins: 3,
MeasurePeriodMins: 3
},
ConfMEASURERaw: { value: '01040303', si: 'Undef' },
ConfLoRa: {
RetransmissionCount: 3,
DR: 5,
TxPower: 8,
IsLBTEnable: false,
LBTRSSI: -80,
LBTScanTime: 1
},
ConfLORARaw: { value: '03050800b0ff01', si: 'Undef' }
}